Repository navigation
Панель экспертов и Оценивание → Мои программы - #445
Merged
Merged
Conversation
9 tasks done
TThanos3000
marked this pull request as ready for review
October 18, 2026 01:30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Выложено на DEV: frontend deployment, backend #788 выложен первым. Live API401/404 JSON и прямые SPA маршруты приглашения/reset проверены.
Что изменено
В панели организатора добавлена вкладка «Эксперты»: приглашение по email, список и нагрузка, ручные назначения, предпросмотр/применение автораспределения и изменение числа оценщиков. Эксперт получает путь приглашения и раздел «Оценивание → Мои программы» с личными счётчиками и назначенными проектами.
Зачем
Реализовать согласованные макеты на dev: эксперты, приглашение, кабинет.
Реализация
Новый evaluation port/HTTP adapter/repository/use case, state с защитой от ответов предыдущего аккаунта. Acceptance обновляет профиль и кеш программы; возврат после оценки обновляет счётчики. Новый приглашённый эксперт регистрируется по фиксированному email, с именем/фамилией/паролем и согласиями без birthday. Вход не принимает приглашение автоматически. Recovery сохраняет контекст; предусмотрены wrong account, expired/revoked, accepted и zero assignments.
API
Зависит от API #788. API должен быть выложен первым. Новые endpoints и ошибки описаны в docs/expert-workspace.md обоих repos. Rating получает assigned_only=1, прежний payload сохраняется. N — минимум, поэтому дополнительные назначенные эксперты могут закончить работу после достижения N. Для существующих экспертов организатор сначала назначает проекты через новую вкладку.
UI
Mont, текущая оболочка и DS Modal/CDK, Button, Field, Choice, Avatar, Alert. Все новые модалки по центру, длинные списки прокручиваются внутри; desktop-таблица и mobile-карточки. Поиск не теряет текст/фокус, повторное нажатие снимает выбор, кейс остаётся выбранным. Escape закрывает модалку и возвращает фокус. Добавлены нативные anchors для существующего appButton и опциональные инициалы Avatar без изменения старого fallback.
Меню открывает стабильный список программ, кнопка программы — сразу тот же список назначенных проектов. Основная роль не заменяется ролью эксперта. No-referrer на странице приглашения; пароль и приглашение не попадают в navigation return URL произвольного origin.
Permissions
Видимость меню задаёт server has_evaluation_access; кнопка оценки — is_user_expert конкретной программы. Организатор без membership видит только управление, эксперт — оценку, обе роли — обе кнопки, обычный участник — ни меню, ни оценку. Сервер остаётся источником разрешений. Pending не назначается, защищённые оценки не снимаются; 409 сохраняет выбор.
Проверки
Acceptance criteria
Не проверено
Реальная доставка во внешний inbox и live authenticated flow на dev; прямые anonymous live routes приглашения/reset проверены на390px без JS errors; тестовые приглашения настоящим пользователям не отправлялись. В локальных снимках старые shell avatars с внешними placeholder URL блокируются изоляцией сети; новые initials fallback проверены. Production не проверяется и не выкатывается этой задачей.
Риски / migration
Backend #788 и его migrations/DEV Nginx routing перед Angular. Invited reset использует /expert-password-reset/ вне server /auth/. Новая дата рождения nullable только для приглашённой регистрации; обычные сценарии сохраняют своё правило. Реальные оценки/участники не редактируются для smoke test. Никакого React или production deploy. Подробности rollout — docs/expert-workspace.md.